// //1.函数地址
// #include<stdio.h>
// int add(int a,int b)
// {
//     return a+b;
// }
// int main()
// {
//     int a=10;
//     int b=20;
//     int ret=add(a,b);
//     printf("%d\n",ret);
//     printf("%p\n",add);
//     printf("%p\n",&add);

//     return 0;
// }


// //函数指针变量
// #include<stdio.h>
// int Add(int x,int y)
// {
//     return x+y;
// }

// int main()
// {
//      printf("请输入两个整数：\n");
//     int a=0,b=0;
//     scanf("%d%d",&a,&b);
//     //利用函数指针变量来调�?,先创建函数指�?
//     int (*ptr)(int,int)=Add;//函数指针变量的格式，在参数里面x,y可以省略，只需要交代形参个数就可以。
//     int num=(*ptr)(a,b);
//     printf("结果为：%d\n",num);
//     return 0;
// }


// //二维数组打印
// #include<stdio.h>
// int main()
// {
//     int  arr[3][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};//3行5列的二维数组
//     //打印
//     for(int i=0;i<3;i++)
//     {
//         for(int j=0;j<5;j++)
//         {
//             printf("%d ",arr[i][j]);
//         }
//         printf("\n");
//     }

//     return 0;
// }


// #include<stdio.h>
// int main()
// {
//     //三个一维数组，用指针数组统一管理打印
//     int arr1[5]={1,2,3,4,5};
//     int arr2[5]={2,3,4,5,6};
//     int arr3[5]={3,4,5,6,7};

//     //首先创建指针数组
//     int* ptr[]={arr1,arr2,arr3};
//     for(int i=0;i<3;i++)
//     {
//         for(int j=0;j<5;j++)
//         {
//             printf("%d ",ptr[i][j]);
//         }
//         printf("\n");
//     }
//     return 0;
// }



// //转移表（计算器）
// #include<stdio.h>
// void menu()
// {
//     printf("*****************************\n");
//     printf("****  1、Add   2、Sub  ******\n");
//     printf("****  3、Mul   4、Div  ******\n");
//     printf("********** 0、eixt  *********\n");
//     printf("*****************************\n");

// }
// //四个函数
// //加法
// int Add(int x,int y)
// {
//     return x+y;
// }
// //减法
// int Sub(int x,int y)
// {
//     return x-y;
// }
// //乘法
// int Mul(int x,int y)
// {
//     return x*y;
// }
// //除法
// int Div(int x,int y)
// {
//     return x/y;
// }

// void Cal(int (*ptr)(int,int))
// {
//     int x=0,y=0;
//     printf("请输入两个数数据：\n");
//     scanf("%d%d",&x,&y);
//     printf("%d\n", ptr(x,y));
// }

// int main()
// { 
//     int input=0;
//     int x=0,y=0;
//     //int (*ptr[5])(int,int)={NULL,Add,Sub,Mul,Div};
//     //用NULL来占下标0的位置，这样就可以直接用input来使用下标，对应输入的功能值。
//    do
//    {
//         menu();
//         printf("请选择对应的计算：\n");
//         scanf("%d",&input);

//     //     if(input>=1&&input<=4)
//     //     {
//     //          //函数指针数组
//     //         printf("请输入两个操作数：\n");
//     //         scanf("%d%d",&x,&y);
//     //         printf("%d\n",ptr[input](x,y));
//     //     }
//     //    else  if(input==0)
//     //     {
//     //         printf("退出计算！\n");
//     //         break;
//     //     }
//     //     else
//     //     {
//     //         printf("输入错误请重新输入：\n");
//     //         break;
//     //     }
    
//         switch(input)
//         {
//             case 1:
//                 //加法
//                 Cal(Add);
//                 break;
//             case 2:
//                 //减法
//                 Cal(Sub);
//                 break;
//             case 3:
//                 //乘法
//                 Cal(Mul);
//                 break;
//             case 4:
//                 //除法
//                 Cal(Div);
//                 break;
//             case 0:
//                 printf("退出计算器，欢迎下次使用！\n");
//                 break;
//             default:
//                 printf("选择错误，请重新选择：\n");
//                 break;
//         }
        
//    } while (input);
//     return 0;
// }

